package com.nodecollege.cloud.service;

import com.nodecollege.cloud.common.model.BindVO;
import com.nodecollege.cloud.common.model.NCResult;
import com.nodecollege.cloud.common.model.QueryVO;
import com.nodecollege.cloud.common.model.po.UpmsAdmin;
import com.nodecollege.cloud.common.model.po.UpmsMenu;
import com.nodecollege.cloud.common.model.po.UpmsOpRole;
import com.nodecollege.cloud.common.model.po.UpmsOpRoleAdmin;
import com.nodecollege.cloud.common.model.vo.MenuTreeVO;

import java.util.List;

/**
 * @author LC
 * @date 2020/2/18 21:24
 */
public interface OpRoleService {

    /**
     * 查询运营角色列表
     *
     * @param queryVO
     * @return
     */
    NCResult<UpmsOpRole> getOpRoleList(QueryVO<UpmsOpRole> queryVO);

    /**
     * 添加运营角色
     *
     * @param opRole
     */
    void addOpRole(UpmsOpRole opRole);

    /**
     * 更新运营角色列表
     *
     * @param opRole
     */
    void updateOpRole(UpmsOpRole opRole);

    /**
     * 删除运营角色列表
     *
     * @param opRole
     */
    void delOpRole(UpmsOpRole opRole);

    /**
     * 查询所有运营菜单树
     *
     * @return
     */
    List<MenuTreeVO> getOpMenuTree();

    /**
     * 根据运营角色查询运营菜单
     *
     * @param opRole
     * @return
     */
    List<UpmsMenu> getOpRoleMenuList(UpmsOpRole opRole);

    /**
     * 绑定解绑运营角色菜单信息
     *
     * @param bindVO
     */
    void bindOpRoleMenu(BindVO bindVO);

    /**
     * 根据角色信息查询绑定的管理员信息
     *
     * @param queryVO
     * @return
     */
    NCResult<UpmsAdmin> getAdminListByOpRole(QueryVO<UpmsOpRoleAdmin> queryVO);

    /**
     * 绑定角色管理员
     *
     * @param bindVO
     * @return
     */
    NCResult bindOpRoleAdmin(BindVO bindVO);

    /**
     * 解除运营角色管理员绑定
     *
     * @param opRoleAdmin
     */
    void unBindOpRoleAdmin(UpmsOpRoleAdmin opRoleAdmin);
}
